home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / pd / serien / purity / nr.26 / filereq / filereq.unit.p < prev    next >
Text File  |  1995-04-23  |  4KB  |  156 lines

  1. UNIT filereq;
  2.  
  3. {$Projekt MyTools}
  4.  
  5. INTERFACE
  6.   USES Intuition;
  7.  
  8.   TYPE STRING100=STRING[100];
  9.  
  10.   FUNCTION  arpreq(titel:STR; VAR Datei,Pfad:String100;wo:p_window):BOOLEAN;
  11.   FUNCTION  OpenArp(version : Integer) : BOOLEAN;
  12.   PROCEDURE CloseArp;
  13.   FUNCTION  aslreq(titel:STR; VAR Datei,Pfad:String100;wo:p_window):BOOLEAN;
  14.   FUNCTION  OpenAsl(version : Integer) : BOOLEAN;
  15.   PROCEDURE CloseAsl;
  16.   FUNCTION libversion(versionsnummer:SHORT):BOOLEAN;
  17.   FUNCTION req(titel:STR; VAR Datei,Pfad:String100;wo:p_window):BOOLEAN;
  18.  
  19. IMPLEMENTATION
  20.  
  21. {$incl "libraries/asl.h", "asl.lib"}
  22.  
  23.  TYPE
  24.   arpFilerequester=RECORD
  25.    FR_Hail      : STR;
  26.    FR_File      : PTR;
  27.    FR_Dir       : PTR;
  28.    FR_Window    : p_window;
  29.    FR_Funcflags : Byte;
  30.    FR_Reserved  : Byte;
  31.    FR_Function  : PTR;
  32.    FR_Reserved2 : LONG;
  33.   END;
  34.  
  35.  
  36. VAR Requ     : p_FileRequester;
  37.     Tags     : ARRAY[0..4] OF TagItem;
  38.     ArpBase  : PTR;
  39.  
  40.   LIBRARY ArpBase:
  41.    -294:FUNCTION Filerequest(a0:PTR):LONG;
  42.   END;
  43.  
  44. FUNCTION libversion;
  45.  VAR lib:p_library;
  46.  BEGIN
  47.   lib:=intuitionbase;
  48.   libversion:=(lib^.lib_version>=versionsnummer);
  49.  END;
  50.  
  51.   FUNCTION  OpenArp;
  52.   BEGIN
  53.     ArpBase := OpenLibrary("arp.library",version);
  54.     IF ArpBase = NIL THEN OpenArp := False ELSE OpenArp := True;
  55.   END;
  56.  
  57.   PROCEDURE CloseArp;
  58.   BEGIN
  59.     IF ArpBase <> NIL THEN CloseLibrary(ArpBase);
  60.     ArpBase := NIL;
  61.   END;
  62.  
  63.   FUNCTION OpenASL;
  64.   BEGIN
  65.     AslBase := OpenLibrary(ASLNAME,version);
  66.     IF AslBase = NIL THEN OpenAsl := False ELSE OpenAsl := True;
  67.   END;
  68.  
  69.   PROCEDURE CloseASL;
  70.   BEGIN
  71.     IF AslBase <> NIL THEN CloseLibrary(AslBase);
  72.     AslBase := NIL;
  73.   END;
  74.  
  75.  
  76. FUNCTION aslreq;
  77.  
  78.   VAR    p_datei,p_pfad:^STRING100;
  79.  
  80.   BEGIN
  81.       p_datei:=^datei;
  82.       p_pfad :=^pfad;
  83.       aslreq:=FALSE;
  84.       IF OpenASL(36) THEN
  85.       BEGIN
  86.        Tags[0]:=TagItem(ASL_Hail,LONG(titel));
  87.        Tags[1]:=TagItem(ASL_File,LONG(p_datei));
  88.        Tags[2]:=tagItem(ASL_Dir,LONG(p_pfad));
  89.        Tags[3]:=TagItem(ASL_window,LONG(wo));
  90.        Tags[4].ti_tag:=TAG_DONE;
  91.        Requ:=AllocAslRequest(ASL_FileRequest,^Tags);
  92.        IF Requ<>NIL THEN
  93.         BEGIN
  94.          IF aslrequest(Requ,^tags) THEN
  95.           BEGIN
  96.            p_Pfad:=Requ^.rf_Dir;
  97.            pfad:=p_pfad^;
  98.            IF (pfad<>'') AND (pfad[length(pfad)] <> ':')
  99.                          AND (pfad[length(pfad)] <> '/')
  100.            THEN pfad:=pfad+'/';
  101.            p_datei:=Requ^.rf_File;
  102.            datei:=p_datei^;
  103.            aslreq:=TRUE;
  104.           END
  105.          ELSE; {aslreq:=FALSE;}  { Keine Datei angewählt }
  106.         FreeAslRequest(Requ);
  107.         END
  108.         ELSE; { Keine requesterstruktur }
  109.       END
  110.      ELSE; { keine asl.lib }
  111.   END;
  112.  
  113.   FUNCTION arpreq;
  114.     VAR requesterstruktur : arpFilerequester;
  115.           p_Datei, p_Pfad : PTR;
  116.           arpdat,arppfad:STRING100;
  117.  
  118.   BEGIN
  119.    IF OpenArp(0) THEN
  120.    BEGIN
  121.     arpdat:=datei;
  122.     arppfad:=Pfad;
  123.     IF (arppfad<>'') AND (arppfad[length(arppfad)]='/') THEN
  124.                           arppfad[length(arppfad)]:=CHR(0);
  125.     p_Datei:=^arpDat;
  126.     p_Pfad :=^arpPfad;
  127.     Requesterstruktur:=arpFilerequester(Titel,p_Datei,p_Pfad,wo,0,0,NIL,0);
  128.     IF Filerequest(^Requesterstruktur)<>0 THEN
  129.      BEGIN
  130.       arpreq:=TRUE;
  131.       IF (arppfad<>'') AND (arppfad[length(arppfad)] <> ':')
  132.                        AND (arppfad[length(arppfad)] <> '/')
  133.       THEN arppfad:=arppfad+'/';
  134.       datei:=arpdat;
  135.       pfad:=arppfad;
  136.      END
  137.      ELSE arpreq:=FALSE;
  138.      END
  139.     ELSE; { keine arpbase }
  140.    END;
  141.  
  142.  FUNCTION req;
  143.  BEGIN
  144.   req:=FALSE;
  145.   IF (libversion(36) AND OpenASL(36)) THEN
  146.    BEGIN
  147.     IF aslreq(titel,Datei,Pfad,wo) THEN req:=TRUE;
  148.    END
  149.   ELSE IF arpreq(titel,Datei,Pfad,wo) THEN req:=TRUE;
  150.  END;
  151.  
  152. BEGIN
  153.  ArpBase:= NIL;
  154.  aslbase:=NIL;
  155. END.
  156.